package com.niit.session16.generic;
//当类中有属性的数据类型无法确定时，可以把这个类定义为泛型类，具体的数据类型在实例化这个类的时候再确定
//定义一个泛型类：在类名后面加上<T>,实例化这个类的时候传进来的数据类型会替换掉类里面所有的T
public class Goods<T> {
	private String model;
	private double price;
	private T t;
//	泛型方法：如果一个方法也有参数的数据类型无法确定，就可以定义成泛型方法
//	数据类型传进来之后，在返回值类型，形参和方法体内部都可以使用这个数据类型
	public <F> void show(F t) {
		System.out.println(t);
	}
//	如果想给泛型做一个限制，可以使用extends和super
//	extends是指只能接收某个类的子类
//	super是指只能接收某个类的父类
	public <E extends Number> void show1(E e) {
		System.out.println(e);
	}
	
	
	public Goods(String model, double price, T t) {
		super();
		this.model = model;
		this.price = price;
		this.t = t;
	}
	public Goods() {
		super();
	}
	public String getModel() {
		return model;
	}
	public void setModel(String model) {
		this.model = model;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public T getT() {
		return t;
	}
	public void setT(T t) {
		this.t = t;
	}
	@Override
	public String toString() {
		return "Goods [model=" + model + ", price=" + price + ", t=" + t + "]";
	}
	

}
